/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>PIVLPPDTS</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 *             Note: because this type is defined as an extension of SXCM_T,
 *             all of the attributes and elements accepted for T are also
 *             accepted by this definition.  However, they are NOT allowed
 *             by the normative description of this type.  Unfortunately,
 *             we cannot write a general purpose schematron contraints to
 *             provide that extra validation, thus applications must be
 *             aware that instance (fragments) that pass validation with
 *             this might might still not be legal.
 *          
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.hl7.v3.PIVLPPDTS#getPhase <em>Phase</em>}</li>
 *   <li>{@link org.hl7.v3.PIVLPPDTS#getPeriod <em>Period</em>}</li>
 *   <li>{@link org.hl7.v3.PIVLPPDTS#getAlignment <em>Alignment</em>}</li>
 *   <li>{@link org.hl7.v3.PIVLPPDTS#isInstitutionSpecified <em>Institution Specified</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.hl7.v3.V3Package#getPIVLPPDTS()
 * @model extendedMetaData="name='PIVL_PPD_TS' kind='elementOnly'"
 * @generated
 */
public interface PIVLPPDTS extends SXCMPPDTS {
	/**
	 * Returns the value of the '<em><b>Phase</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                         A prototype of the repeating interval specifying the
	 *                         duration of each occurrence and anchors the periodic
	 *                         interval sequence at a certain point in time.
	 *                      
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Phase</em>' containment reference.
	 * @see #setPhase(IVLPPDTS)
	 * @see org.hl7.v3.V3Package#getPIVLPPDTS_Phase()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='phase' namespace='##targetNamespace'"
	 * @generated
	 */
	IVLPPDTS getPhase();

	/**
	 * Sets the value of the '{@link org.hl7.v3.PIVLPPDTS#getPhase <em>Phase</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Phase</em>' containment reference.
	 * @see #getPhase()
	 * @generated
	 */
	void setPhase(IVLPPDTS value);

	/**
	 * Returns the value of the '<em><b>Period</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                         A time duration specifying a reciprocal measure of
	 *                         the frequency at which the periodic interval repeats.
	 *                      
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Period</em>' containment reference.
	 * @see #setPeriod(PPDPQ)
	 * @see org.hl7.v3.V3Package#getPIVLPPDTS_Period()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='period' namespace='##targetNamespace'"
	 * @generated
	 */
	PPDPQ getPeriod();

	/**
	 * Sets the value of the '{@link org.hl7.v3.PIVLPPDTS#getPeriod <em>Period</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Period</em>' containment reference.
	 * @see #getPeriod()
	 * @generated
	 */
	void setPeriod(PPDPQ value);

	/**
	 * Returns the value of the '<em><b>Alignment</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Specifies if and how the repetitions are aligned to
	 *                      the cycles of the underlying calendar (e.g., to
	 *                      distinguish every 30 days from "the 5th of every
	 *                      month".) A non-aligned periodic interval recurs
	 *                      independently from the calendar. An aligned periodic
	 *                      interval is synchronized with the calendar.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Alignment</em>' attribute.
	 * @see #setAlignment(Object)
	 * @see org.hl7.v3.V3Package#getPIVLPPDTS_Alignment()
	 * @model dataType="org.hl7.v3.CalendarCycle"
	 *        extendedMetaData="kind='attribute' name='alignment'"
	 * @generated
	 */
	Object getAlignment();

	/**
	 * Sets the value of the '{@link org.hl7.v3.PIVLPPDTS#getAlignment <em>Alignment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Alignment</em>' attribute.
	 * @see #getAlignment()
	 * @generated
	 */
	void setAlignment(Object value);

	/**
	 * Returns the value of the '<em><b>Institution Specified</b></em>' attribute.
	 * The default value is <code>"false"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Indicates whether the exact timing is up to the party
	 *                      executing the schedule (e.g., to distinguish "every 8
	 *                      hours" from "3 times a day".)
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Institution Specified</em>' attribute.
	 * @see #isSetInstitutionSpecified()
	 * @see #unsetInstitutionSpecified()
	 * @see #setInstitutionSpecified(boolean)
	 * @see org.hl7.v3.V3Package#getPIVLPPDTS_InstitutionSpecified()
	 * @model default="false" unsettable="true" dataType="org.hl7.v3.Bl"
	 *        extendedMetaData="kind='attribute' name='institutionSpecified'"
	 * @generated
	 */
	boolean isInstitutionSpecified();

	/**
	 * Sets the value of the '{@link org.hl7.v3.PIVLPPDTS#isInstitutionSpecified <em>Institution Specified</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Institution Specified</em>' attribute.
	 * @see #isSetInstitutionSpecified()
	 * @see #unsetInstitutionSpecified()
	 * @see #isInstitutionSpecified()
	 * @generated
	 */
	void setInstitutionSpecified(boolean value);

	/**
	 * Unsets the value of the '{@link org.hl7.v3.PIVLPPDTS#isInstitutionSpecified <em>Institution Specified</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetInstitutionSpecified()
	 * @see #isInstitutionSpecified()
	 * @see #setInstitutionSpecified(boolean)
	 * @generated
	 */
	void unsetInstitutionSpecified();

	/**
	 * Returns whether the value of the '{@link org.hl7.v3.PIVLPPDTS#isInstitutionSpecified <em>Institution Specified</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Institution Specified</em>' attribute is set.
	 * @see #unsetInstitutionSpecified()
	 * @see #isInstitutionSpecified()
	 * @see #setInstitutionSpecified(boolean)
	 * @generated
	 */
	boolean isSetInstitutionSpecified();

} // PIVLPPDTS
